package modelo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 *
 * @author Anderson Bruno Cezario
 */
public class Fornecedor {

    private int codigo;
    private Pessoa pessoa;
    private boolean cadastroAprovado;
    private boolean ativo;
    private Data dataCadastro;

    public boolean isCadastroAprovado() {
        return cadastroAprovado;
    }

    public void setCadastroAprovado(boolean cadastroAprovado) {
        this.cadastroAprovado = cadastroAprovado;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public Data getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Data dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public Fornecedor() {
        this.codigo = 0;
        this.pessoa = new Pessoa();
        this.cadastroAprovado = false;
        this.ativo = false;
        this.dataCadastro = new Data();
    }

    public Fornecedor(int codigo) {
        this.codigo = codigo;
        this.pessoa = null;
        this.cadastroAprovado = false;
        this.ativo = false;
        this.dataCadastro = null;
    }

    public Fornecedor(String nome) {
        this.codigo = 0;
        this.pessoa = new Pessoa(nome, "nome");
        this.cadastroAprovado = false;
        this.ativo = false;
        this.dataCadastro = null;
    }

    public Fornecedor(Fornecedor fornecedor) {
        this.codigo = fornecedor.getCodigo();
        this.pessoa = new Pessoa(fornecedor.getPessoa());
        this.cadastroAprovado = fornecedor.isCadastroAprovado();
        this.ativo = fornecedor.isAtivo();
        this.dataCadastro = new Data(fornecedor.getDataCadastro());
    }

    public Fornecedor(HashMap<String, Object> dados) {
        this.setCodigo(Integer.parseInt((String) (String) dados.get("cod")));
        this.dataCadastro = new Data();
        String nasc = (String) dados.get("dataCadastro");
        if (nasc.compareTo("") != 0) {
            this.getDataCadastro().setDia(nasc.split("/")[0]);
            this.getDataCadastro().setMes(nasc.split("/")[1]);
            this.getDataCadastro().setAno(nasc.split("/")[2]);
        } else {
            this.getDataCadastro().setDia("00");
            this.getDataCadastro().setMes("00");
            this.getDataCadastro().setAno("0000");
        }

        // DADOS PESSOAIS
        this.pessoa = new Pessoa();
        this.getPessoa().setNome((String) dados.get("nome"));
        nasc = (String) (String) dados.get("dataNasc");
        if (nasc.compareTo("") != 0) {
            this.getPessoa().getNascimento().setDia(nasc.split("/")[0]);
            this.getPessoa().getNascimento().setMes(nasc.split("/")[1]);
            this.getPessoa().getNascimento().setAno(nasc.split("/")[2]);
        } else {
            this.getPessoa().getNascimento().setDia("00");
            this.getPessoa().getNascimento().setMes("00");
            this.getPessoa().getNascimento().setAno("0000");
        }

        this.getPessoa().setRG((String) dados.get("rg"));
        this.getPessoa().setCPF((String) dados.get("cpf"));
        this.getPessoa().setSexo((String) dados.get("sexo"));
        this.getPessoa().setTelefone((String) dados.get("telefone"));
        this.getPessoa().setCelular((String) dados.get("celular"));
        this.getPessoa().setEstadoCivil((String) dados.get("estadoCivil"));
        this.getPessoa().setEmail((String) dados.get("email"));

        // ENDERECO
        this.getPessoa().getEndereco().setLogradouro((String) dados.get("tipoLogradouro"));
        this.getPessoa().getEndereco().setNomeLogradouro((String) dados.get("nomeLogradouro"));
        try {
            this.getPessoa().getEndereco().setNum(Integer.parseInt((String) dados.get("numLogradouro")));
        } catch (Exception exception) {
            this.getPessoa().getEndereco().setNum(0);
        }
        this.getPessoa().getEndereco().setComplemento((String) dados.get("complemento"));
        this.getPessoa().getEndereco().setBairro((String) dados.get("bairro"));
        this.getPessoa().getEndereco().setEstado((String) dados.get("estado"));
        this.getPessoa().getEndereco().setCidade((String) dados.get("cidade"));
        this.getPessoa().getEndereco().setCep((String) dados.get("cep"));

        // REFERENCIAS
        if (((String) dados.get("cadastroAprovado")).equals("true")) {
            this.setCadastroAprovado(true);
        } else {
            this.setCadastroAprovado(false);
        }
        if (((String) dados.get("ativo")).equals("false")) {
            this.setAtivo(false);
        } else {
            this.setAtivo(true);
        }

    }

    public HashMap<String, Object> toHashMap() {
        HashMap<String, Object> retorno = new HashMap<String, Object>();
        String aux = "";
        retorno.put("cod", "" + this.codigo);
        if (pessoa != null) {
            //faz operações da pessoa
            retorno.put("nome", this.getPessoa().getNome());
            retorno.put("cpf", this.getPessoa().getCPF());
            retorno.put("dataNasc", aux);
            retorno.put("rg", this.getPessoa().getRG());
            retorno.put("sexo", this.getPessoa().getSexo());
            retorno.put("telefone", this.getPessoa().getTelefone());
            retorno.put("celular", this.getPessoa().getCelular());
            retorno.put("estadoCivil", this.getPessoa().getEstadoCivil());
            retorno.put("email", this.getPessoa().getEmail());

            //faz operações do endereco
            retorno.put("tipoLogradouro", this.getPessoa().getEndereco().getLogradouro());
            retorno.put("nomeLogradouro", this.getPessoa().getEndereco().getNomeLogradouro());
            retorno.put("numLogradouro", "" + this.getPessoa().getEndereco().getNum());
            retorno.put("complemento", this.getPessoa().getEndereco().getComplemento());
            retorno.put("bairro", this.getPessoa().getEndereco().getBairro());
            retorno.put("estado", this.getPessoa().getEndereco().getEstado());
            retorno.put("cidade", this.getPessoa().getEndereco().getCidade());
            retorno.put("cep", this.getPessoa().getEndereco().getCep());

        }

        if (dataCadastro != null) {
            aux = dataCadastro.getDia() + "/" + dataCadastro.getMes() + "/"
                    + dataCadastro.getAno();
            retorno.put("dataCadastro", aux);
        } else {
            aux = "00/00/0000";
            retorno.put("dataCadastro", aux);
        }

        if (cadastroAprovado) {
            retorno.put("cadastroAprovado", "true");
        } else {
            retorno.put("cadastroAprovado", "false");
        }
        if (this.isAtivo()) {
            retorno.put("ativo", "true");
        } else {
            retorno.put("ativo", "false");
        }
        return retorno;
    }

}
